package com.deer.wms.ware.task.dao;

import com.deer.wms.project.root.mapper.SuperMapper;
import com.deer.wms.ware.task.model.pickTask.PickTask;
import com.deer.wms.ware.task.model.pickTask.PickTaskCriteria;
import com.deer.wms.ware.task.model.pickTask.PickTaskDto;
import com.deer.wms.ware.task.model.pickTask.SeedingWallAlertInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author guo
 */
public interface PickTaskMapper extends SuperMapper<PickTask> {
    /**
     * 按条件查询拣货任务
     * @param criteria 查询条件
     * @return List<PickTaskDto>
     */
    List<PickTaskDto> findList(PickTaskCriteria criteria);
    List<PickTaskDto> findByBillNo(PickTaskCriteria criteria);
    List<PickTaskDto> findByWaveMasterId(PickTaskCriteria criteria);
    List<PickTaskDto> allotTask(PickTaskCriteria criteria);

    /**
     * 通过出库任务明细查询其关联的拣货任务
     * @param soDetailId so明细id
     * @return List<PickTaskVo>
     */
    List<PickTask>findBySoDetailId(@Param("soDetailId") Integer soDetailId);

    List<PickTaskDto> findFirst(PickTaskCriteria criteria);

    List<PickTaskDto> findBySo(@Param("soNo") String soNo);

    /**
     * 通过波次ID查询关联的拣货任务
     * @param waveId 波次ID
     * @return List<PickTaskDto>
     */
    List<PickTaskDto> findByWave(@Param("waveId") Integer waveId);

    List<SeedingWallAlertInfo> getSeedingWallAlertInfo(PickTaskCriteria criteria);

    List<PickTaskDto> mergeTask();
    List<PickTask> findMergeTask(PickTaskDto pickTaskDto);

    int updateChildTasks(PickTask item);

    List<PickTaskDto> getChildTasksByParentId(@Param("parentId") Integer parentId);
     PickTaskDto getTaskById(@Param("taskId")Integer taskId);

    List<PickTaskDto> findBySoMasterId(@Param("soMaterId") Integer soMaterId);

    List<PickTaskDto> findPageList(PickTaskCriteria criteria);

    long findCount(PickTaskCriteria criteria);
}